
package persistencias;

import classes.Veiculo;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;


public class PVeiculo {
    private List<Veiculo> veiculos = new ArrayList<Veiculo>();
    int i;
    int j;
    
  public List<Veiculo> listarMarca(Veiculo veiculo){
      List<Veiculo> v = null;
        for(i = 0; i< veiculos.size(); i++){
            if (veiculos.get(i).getMarca().equalsIgnoreCase(veiculo.getMarca())) {
                v.add(veiculos.get(i));
            }
        }
        return v;
    }

      public  List<Veiculo> listarCor(Veiculo veiculo){
        List<Veiculo> v = null;
        for(i = 0; i< veiculos.size(); i++){
            if (veiculos.get(i).getCor().equalsIgnoreCase(veiculo.getCor())) {
                v.add(veiculos.get(i));
            }
        }
        return v;
    }
    
    public  List<Veiculo> listarModelo(Veiculo veiculo){
        List<Veiculo> v = null;
        for(i = 0; i< veiculos.size(); i++){
            if (veiculos.get(i).getModelo().equalsIgnoreCase(veiculo.getModelo())) {
                v.add(veiculos.get(i));
            }
        }
        return v;
    }
    
      public  List<Veiculo> listarTipo(Veiculo veiculo){
        List<Veiculo> v = null;
        for(i = 0; i< veiculos.size(); i++){
            if (veiculos.get(i).getTipo().equalsIgnoreCase(veiculo.getTipo())) {
               v.add(veiculos.get(i));
            }
        }
        return v;
    }
    
   public int consultarPlaca(Veiculo veiculo){
        for(i = 0; i< veiculos.size(); i++){
            if (veiculos.get(i).getPlaca().equalsIgnoreCase(veiculo.getPlaca())) {
                System.out.println("Veiculo já cadastrado");
                return i;
            }
        }
       System.out.println("Veiculo não cadastrado");
        return -1;
    }
    
    public void adicionar(Veiculo veiculo) {
        veiculo.setLivre(true);
        this.veiculos.add(veiculo);
      
    }
    
    public void excluir(Veiculo veiculo) {
        j = consultarPlaca(veiculo);
        this.veiculos.remove(j);
}

    public List<Veiculo> getVeiculos() {
        return veiculos;
    }

            //Manipulação de Arquivos
    
    public void salvarVeiculoArquivo(List<Veiculo> veiculos) throws IOException {
                FileWriter writer = new FileWriter(new File("veiculos.txt"));
                PrintWriter saida = new PrintWriter(writer);
                
                for( i=0; i < veiculos.size(); i++) {
                        saida.println(veiculos.get(i).getPlaca() + ","
                        + veiculos.get(i).getMarca() + "," 
                        + veiculos.get(i).getCor() + ","
                        + veiculos.get(i).getModelo()
                        + veiculos.get(i).getTipo() + ","
                        + veiculos.get(i).getOpcionais() + ","
                        + veiculos.get(i).getObservacoes() );
                }
                writer.close();
                saida.close();
        }
    
    public void carregarVeiculosArquivo(List<Veiculo> veiculos) throws IOException {
                File arquivo = new File("veiculos.txt");
                
                if(!arquivo.exists()) arquivo.createNewFile();
                else {
               
                        FileReader leitura = new FileReader("veiculos.txt");
                        BufferedReader leitor = new BufferedReader(leitura);
                                
                        String linha = null;
                        String [] vetor = null;
                
                        while((linha = leitor.readLine()) != null) {
                                vetor = linha.split(",");
                        
                                String placa = vetor[0];
                                String marca = vetor[1];
                                String cor = vetor[2];
                                String modelo = vetor[3]; 
                                String tipo = vetor[4];
                                String opcionais = vetor[5];
                                String observacoes = vetor[6];
                        
                                Veiculo novoVeiculo = new Veiculo(placa, marca, modelo, cor, tipo, opcionais, observacoes);
                
                                adicionar(novoVeiculo);
                        }
                        leitor.close();
                        leitura.close();
                }
        }
    
}
